Accessing nonvolatile storage has generally been one of the key performance bottlenecks for data processing systems. The advent of storage command queuing was one technological development that, in general was able to improve data processing system perform. However, the queuing mechanisms developed were designed to address specific limitations created by the use of electromechanical hard drives as non-volatile memory for data storage. One specific limitation is that data is rarely read in the order in which it is stored on disk, as applications tend to request data that is scattered throughout all portions of the drive. One method of overcoming the mechanical limitations of an electromechanical hard drive is the use of command queuing, wherein a hard drive accepts multiple commands from a host controller, and then re-arranges those commands to minimize rotational and seek delay.
FIG. 1A is a block diagram of tag based command queuing as is known in the art, in which multiple commands are delivered to a storage device, and the commands are processed or dispatched in a manner that minimized access latencies across the set of commands. A memory buffer region 102 contains data associated with a command, and a set of tags 112 is used to identify each command. In one implementation of tagged queuing, a host controller 110 dispatches commands, which are queued into a command queue 122 for a hard drive 120. The hard drive 120 re-orders the commands in a way that efficiently accesses data on the one or more disk platters 124 upon which the data is stored. When the hard drive 120 is ready to transfer data associated with a command, the tag for the command is communicated to the host controller 110. The host controller 110 can then set up a direct memory transfer (DMA) between the hard drive 120 and the memory buffer region 102 which is store data transferred from the hard drive 120, or which stores data which will be transferred to the hard drive 120.
FIG. 1B is an illustration of the rotating disk platter 124 which has a clockwise rotation 126, and which will access data for Task A 152, Task B 132, Task C 162, and Task D 142. Notwithstanding the dispatch order of the commands, the commands will be accessed in the manner that reduces the overall latency for the set of commands, as the disk platter 124 rotates, and the data is accessed by the Read/Write head 128 of the hard drive. Hard drive based command queuing systems have limitations, however. The order in which commands are completed is largely a function of the physical placement of the data on the storage medium, so specifying a priority system in which commands should be serviced may result in an overall increase of system latency over a set of commands. Moreover, rotation and seek optimized command queuing systems provide no benefit when accessing semiconductor based nonvolatile storage.